package edu.ctbu.insurance.service.impl;

import com.github.pagehelper.PageHelper;
import edu.ctbu.insurance.bean.Customer;
import edu.ctbu.insurance.bean.InsProduct;
import edu.ctbu.insurance.mapper.CustomerMapper;
import edu.ctbu.insurance.mapper.InsProductMapper;
import edu.ctbu.insurance.service.InsProductService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author cd
 * @since 2024-06-28
 */
@Service
@Transactional
public class InsProductServiceImpl extends ServiceImpl<InsProductMapper, InsProduct> implements InsProductService {

    @Autowired
    private InsProductMapper insProductMapper;

    @Override
    public List<InsProduct> likeSelectIdAndType(String productId, String productType) {
        return insProductMapper.likeSelectIdAndType(productId,productType);
    }

    /**
     * 既可以查询所有客户信息，也可以按product_id和product_type模糊查询客户信息,并且实现分页展示
     * @param productId 产品单号
     * @param productType 产品类型
     * @param pageNum 当前页
     * @param pageSize 每页大小
     * @return 返回对应客户信息List
     */
    @Override
    public List<InsProduct> getAllInsProductLikeIdAndTypeAndPageHelper(String productId, String productType, int pageNum, int pageSize) {
        //pageHelper会拦截你要分页的sql语句  改造sql为分页sql
        //在该sql被调用之前   配置分页信息  由pageHelper生成分页语句
        PageHelper.startPage(pageNum,pageSize);
        return insProductMapper.likeSelectIdAndType(productId, productType);
    }

    /**
     * 根据product_id删除，就是将对应delete_flag设置为0
     * @param productId 客户ID
     * @return 成功返回true，失败返回false
     */
    @Override
    public boolean deleteInsProductById(int productId) {
        int num = insProductMapper.deleteInsProductById(productId);
        if(num > 0){
            return true;
        }
        else {
            return false;
        }
    }

    @Override
    public InsProduct findInsProductByProductId(Integer productId){
        return insProductMapper.findInsProductByProductId(productId);
    }
}
